package xyz.mumuwei.youthcourseserver.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import xyz.mumuwei.youthcourseserver.common.dto.Eacharts;
import xyz.mumuwei.youthcourseserver.common.dto.PageDto;
import xyz.mumuwei.youthcourseserver.pojo.Course;

import java.util.List;

/**
 * @author mumuwei
 * @since 2022-02-19
 */
@Mapper
public interface CourseMapper extends BaseMapper<Course> {

    /**
     * 根据课程分类获取课程信息
     * @param pageDto 分页参数
     * @return 课程列表
     */
    List<Course> getCoursePageByClass(PageDto pageDto);

    /**
     * 分页获取课程列表——支持模糊查询
     * @param pageDto 分页信息
     * @return 分页课程列表
     */
    List<Course> getCoursePage(PageDto pageDto);

    /**
     * 获取课程列表 不分页
     * @return 课程列表
     */
    List<Course> geCourseList();

    /**
     * 根据课程id获取课程信息
     * @param id 课程id
     * @return 课程信息
     */
    Course getCourseById(Integer id);

    /**
     * 获取课程适应年龄段列表
     * @return 年龄段列表
     */
    List<String> getAgeList();

    /**
     * 获取课程分类列表
     * @return 课程分类列表
     */
    List<String> getClassifyList();

    /**
     * 根据用户id 获取用户今日课程
     * @param startOfDay 开始时间
     * @param endOfDay 结束时间
     * @param uid 用户id
     * @return 课程列表
     */
    List<Course> getTodayCourseByUserId(String startOfDay, String endOfDay, Integer uid);

    /**
     * 根据用户角色获取课程类别
     * 管理员 id传null
     * 教师传教师id
     * @param id 教师id
     * @return 课程列表
     */
    List<Course> getCourseListByRole(@Param("id") Integer id);

    /**
     * 获取其课程销量前五
     * @return 数据
     */
    List<Eacharts> getCourseSales();
}
